<?php

namespace app\command;

use phpseclib3\Net\SSH2;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Output\OutputInterface;


class SSH extends Command
{
    protected static $defaultName = 'ssh';
    protected static $defaultDescription = '测试ssh链接';

    /**
     * @return void
     */
    protected function configure()
    {
        $this->addArgument('name', InputArgument::OPTIONAL, 'Name description');
    }

    /**
     * @param InputInterface $input
     * @param OutputInterface $output
     * @return int
     */
    protected function execute(InputInterface $input, OutputInterface $output): int
    {

        $this->demo();
        return self::SUCCESS;
    }

    protected function demo()
    {
        /** 实例化一个ssh类 */
        $ssh = new SSH2('8.154.18.197',22);
        /** 登陆服务器 ：使用账号和密码登陆*/
        if (!$ssh->login('root', 'Aa123456!')) {
            exit('Login Failed');
        }
        /** 发送pty命令 比如执行docker命令 */
        //$ssh->enablePTY();
        /** 执行shell命令，并获取执行结果，官方建议shiyong PHP_EOL 作为分隔符，但是实际测试是不行的，或者使用分号;分隔，测试可以使用 */
        //$output=$ssh->exec( "set -e && cd /www && cd server && ls");
        $output=$ssh->exec( "set -e ; cd /www ; cd wwwroot ; ls");
        print_r($output);
        //$content = $ssh->exec("sudo docker exec -it php8 /bin/sh");
        //print_r($content);
        //$content = $ssh->exec("php /www/wwwroot/feedback/demo.php");
        echo "执行 php /www/wwwroot/feedback/demo.php\r\n";
        $ssh->write("php /www/wwwroot/feedback/demo.php");
        echo "执行读取命令\r\n";
        // 循环读取输出
        echo $ssh->read();
        echo $ssh->read();
        echo $ssh->read();

        $ssh->disconnect();
    }

}
